<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>


    function makeIterator(array) {
      var nextIndex = 0;
      console.log('nextIndex:------return外面', nextIndex)
      return {
        next: function() {
          console.log('nextIndex:----->', nextIndex) // 0 1 2
          return nextIndex < array.length ?
            {value: array[nextIndex++], done: false} :
            {value: undefined, done: true};
        }
      };
    }

    // setData(a++)
    // setData(() => a++)
    // setData(a++)
    // setData(a++)

    var it = makeIterator(['a', 'b']); // 0  初始化闭包的值
    it.next() // { value: "a", done: false }
    it.next() // { value: "a", done: false }
    it.next() // { value: "a", done: false }
    // var it = makeIterator(['a', 'b']); // 0
    // it.next()
    // var it = makeIterator(['a', 'b']); // 0
    // it.next()
    // it.next() // { value: "b", done: false }
    // it.next() // { value: undefined, done: true }
    // ;(() => {
    //   console.log(this,' 1 ---> this')
    // })()


    // function auto() {
    //   return function() {
    //     console.log(this,' 2 --->this')
    //   }
    // }

    // auto()()


    // console.log(it.next(), 'it')
    // console.log(it.next(), 'it')
    // console.log(it.next(), 'it')




    // Symbol(Symbol.iterator)
  //  const obj = {
  //    0: '1811A专高6',
  //    1: '1811A实训1',
  //    2: '1811A实训2',
  //    length: 3,
  //   //  [Symbol.iterator]: Array.prototype[Symbol.iterator]
  //  }

  //  const set = new Set(obj); //
  //  console.log('set:', set)

   // es6统一提供了一个遍历器接口

  //  console.log('obj,:', obj)

  //  for(let key of obj) {
  //    console.log('key:', key)
  //  }
  //  for(let i = 0 ; i < obj.length; i++) {
  //    console.log('obj', obj[i])
  //  }
  //  for(let key in obj) {
  //    console.log(key, 'key')
  //  }
  // obj.forEach(item => {
  //   console.log(item, 'item')
  // })





  //  function fn( {age, name, ...rest} , ) {
  //    console.log(name, age, rest)
  //  }

  //  fn({'name': 'name', 'age': '12', 'address':'d', 'info':'1', 'gender':1, 'avatar':'1'})



    // var arr = [1,2,3,4,5]

    // function auto() {

    //   let a = arr.map(item => {
    //     if (item === 3) {
    //       return item
    //     } else {
    //       return null
    //     }
    //   })
    //   console.log(a, 'a')

      // arr.forEach(item => {
      //   console.log(item, 'item')
      //   if (item === 3) {
      //     break;
      //   }
      // })
      // for(var i = 0; i < arr.length; i ++) {
      //     console.log(i, 'i')
      //   if (i === 3) {

      //     break;
      //   }
      // }
    // }

    // auto()


  </script>
</body>
</html>
